March 05, 2021
아마존 클론을 하고 있다. 아마존 배경화면을 보면 화면을 줄일 때 항상 이미지의 가운데 부분을 보여준다.
이미지보다 화면이 작아지면 왼쪽 오른쪽 부분이 짤리면서 가운데만 보여준다. 화면을 더 줄이면 어느 순간부터는 이미지는 왼쪽으로 고정이 되고 오른쪽 부분만 짤리면서 축소된다.보통 이미지를 화면 중앙에 넣을 때 margin: 0 auto; 를 사용한다.
img {
display: block;
margin: 0 auto;
}
이렇게 하면 화면을 줄일 때 이미지의 가운데 부분만 보여주는게 안 된다. 왼쪽으로 고정되고 오른쪽 부분이 짤리게 된다. 위 3번째 그림처럼.
html 코드
<div className="img-size"> <!-- 1번(red) == 화면크기 -->
<div className="img-center"> <!-- 2번(blue) -->
<img className="img"src="url"></img> <!-- 3번(green) -->
</div>
</div>
css 코드
.img-size {
position: relative;
width: 100%;
height: 600px;
}
.img-center {
text-align: center;
position: absolute;
top: 0;
right: -200%;
bottom: 0;
left: -200%;
}
.img {
max-width: 100%;
max-height: 100%;
}
1번-red 태그는 width: 100%; 로 화면너비와 같다. 2번-blue 태그는 1번태그를 기준으로 position: absolute; 되어 있다. 위아래는 0으로 착 붙어있고 좌우는 -200%을 줘서 현재 보이는 화면보다 더 큰 박스가 만들어져 있다. text-align: center;를 줬기 때문에 이미지는 항상 2번-blue태그 안에 가운데 위치한다.
a는 현재 이미지가 화면 가운데 이쁘게 있다. 점점 화면(1번-red태그)를 축소할 때를 그림으로 그려봤다. e처럼 그림이 올라가면 안된다. 그래서 c 쯤에서 이미지를 왼쪽으로 고정시키고 오른쪽부분만 짤려서 보여주게끔 해야 한다.
@media screen and (max-width: 1000px) {
.img-center {
text-align: left;
left: -255px;
}
}
나는 1000px를 기준으로 했다. 화면이 1000px 보다 작아지면 그림이 왼쪽으로 착 붙는다. 왼쪽부분을 고정시키기 위해 text-align: left;를 하고 left의 픽셀은 개발자모드를 통해 자연스러운 부분을 찾아냈다.